Library Abstraction for C / C + + Concurrency — extended version —

نویسندگان

  • Mark Batty
  • Mike Dodds
  • Alexey Gotsman
چکیده

When constructing complex concurrent systems, abstraction is vi-tal: programmers should be able to reason about concurrent li-braries in terms of abstract specifications that hide the implementa-tion details. Relaxed memory models present substantial challengesin this respect, as libraries need not provide sequentially consistentabstractions: to avoid unnecessary synchronisation, they may allowclients to observe relaxed memory effects, and library specifica-tions must capture these.In this paper, we propose a criterion for sound library abstrac-tion in the new C11 and C++11 memory model, generalising thestandard sequentially consistent notion of linearizability. We provethat our criterion soundly captures all client-library interactions,both through call and return values, and through the subtle syn-chronisation effects arising from the memory model. To illustrateour approach, we verify implementations against specifications forthe lock-free Treiber stack and a producer-consumer queue. Oursis the first approach to compositional reasoning for concurrentC11/C++11 programs.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Improving performance and maintainability through refactoring in C++11

Abstraction based programming has been traditionally seen as an approach that improves software quality at the cost of losing performance. In this paper, we explore the cost of abstraction by transforming the PARSEC benchmark fluidanimate application from low-level, hand-optimized C to a higher-level and more general C++ version that is a more direct representation of the algorithms. We elimina...

متن کامل

On the conditions necessary for removing abstraction penalties in OOLALA

OoLaLa is an object oriented linear algebra library designed to reduce the effort of software development and maintenance. In contrast with traditional (Fortran-based) libraries, it provides two high abstraction levels that significantly reduce the number of implementations necessary for particular linear algebra operations. Initial performance evaluations of a Java implementation of OoLaLa sho...

متن کامل

Communicating Process Architectures 2004 C++csp Networked

C++CSP is a library for C++ enabling direct implementation of CSP concurrency design. It provides an extended set of CSP primitives that follows the model captured by occam and JCSP, with an API similar to the latter. It runs on most platforms, with efficient realisation for both Windows and Unix/Linux. It was released under the open source Lesser GNU Public Licence in January, 2004. That versi...

متن کامل

Pervasive Parallelism for Managed Runtimes

Modern programming languages like C# or Java are executed in a managed runtime and offer support for concurrency at a high level of abstraction. However, high-level parallel abstractions (e.g., thread pools) can merely be provided as a library since the underlying runtime (including the dynamic compiler) is aware of only a small set of low-level parallel abstractions. In this paper we discuss a...

متن کامل

Formal Verification for C Program

Iterative abstraction refinement has emerged in the last few years as the leading approach to software model checking. We present an approach for automatically verifying C programs against safety specifications based on finite state machine. The approach eliminates unneeded variables using program slicing technique, and then automatically extracts an initial abstract model from C source code us...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2012